﻿using System;

namespace UltimateNavigationFramework.UriNavigation
{
    public interface IUltimateNavigationJournal
    {
        void AddHistoryPoint(UltimateNavigationJournalEntry journalEntry);
        void AddHistoryPointIfDifferent(UltimateNavigationJournalEntry journalEntry, bool suppressNavigation = false);
        System.Collections.Generic.Stack<UltimateNavigationJournalEntry> BackStack { get; }
        bool CanGoBack { get; }
        bool CanGoForward { get; }
        UltimateNavigationJournalEntry CurrentEntry { get; }
        System.Collections.Generic.Stack<UltimateNavigationJournalEntry> ForwardStack { get; }
        void GoBack();
        void GoForward();
        event EventHandler<UltimateNavigationJournalEventArgs> Navigated;
    }
}
